我們可以用陣列或者物件的形式來存放資料,並且透過 v-for 的方式將資料全部顯示出來,其中我們會使用 index 來存放資料的索引值,而物件和陣列最大的差別就在於索引值部分,陣列是用數字由 0 依序表示索引,而物件則用物件內部指定名稱表示索引。
<body>
    <div id=app>
        陣列資料
        <ul>
            <li v-for="(item,index) in dataArray">{{index}}:{{item.name}}{{item.age}}</li>
        </ul>
        物件資料
        <ul>
            <li v-for="(item,index) in dataObject">{{index}}:{{item.name}}{{item.age}}</li>
        </ul>
    </div>
</body>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
    var app = new Vue({
        el: '#app',
        data:{
            dataArray: [
                {
                    name: 'Leo',
                    age:23
                },
                {
                    name: 'Marry',
                    age:30
                },
                {
                    name: 'Peter',
                    age:34
                },
            ],
            dataObject: {
                one:{
                    age:23
                },
                two:{
                    age:30
                },
                three:{
                    age:34
                }
            },
        }
    })
</script>
我們如果使用 v-for 來顯示陣列資料,用 li 當成顯示方式,並且在每個 li 中間加入輸入欄位,此時我們依照資料 age 的大小,分別在輸入欄位輸入數字1~3,1 表示 age 最小的,3 表示最大的。當我們在使用一個反轉陣列的方法時,會發現原本輸入數字沒有跟著資料欄位移動。這是因為 Vue 為了確保效能,會盡量避免重複渲染已經渲染好的元素,所以只有部分元素重新渲染。這時我們使用到  key 就可以使元素重新渲染,記得 key 值要找都不一樣,確保可識別唯一性,比如像是 age 資料就都是不一樣的,當我們使用 key 後在使用反轉陣列方法時,就可以發現輸入的數字也會隨著資料反轉。
<body>
    <div id='app'>
        <ul>
            <li v-for="item in dataArray" >{{item.name}}{{item.age}} <input type="text"> </li>
        </ul>
        <ul>
            <li v-for="(item,key) in dataArray" :key='item.age'>{{item.name}}{{item.age}} <input type="text"> </li>
        </ul>
        <button @click="reverse(dataArray)">反轉陣列</button>
    </div>
</body>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
    var app = new Vue({
        el: '#app',
        data:{
            dataArray: [
                {
                    name: 'Leo',
                    age:23
                },
                {
                    name: 'Marry',
                    age:30
                },
                {
                    name: 'Peter',
                    age:34
                },
            ]
        },
        methods: {
            reverse:function(arr){
                arr.reverse();
            }
        },
    })
</script>

有時候我們要篩選陣列裡面的資料,這時候就可以用 js 內建處理陣列的方法 filter() 來幫助我們過濾資料,而 filter() 的特性是它會 return 後方條件為 true 的物件。範例程式是用一個 dataArray 陣列來存放我們的原始資料,用 search 來代表我們要找尋的資料,並用 v-model 將它的值和 input 輸入欄位綁在一起,而 newArr 陣列則是來放我們透過 fliter 過濾後的資料。最後我們寫一個 fil 方法,方法先宣告變數名稱 vm 為 this,接下來我們就可以透過 vm 來存取 Vue 應用中的資料,最後當 filter 函數 return 後面的條件式是 true ,也就是 search 搜尋的文字和原本資料(此時用 item 代表)的 name 一樣時( match 方法),陣列中所屬的物件就會傳到 newArr 陣列中。
<body>
    <div id='app'>
        原本資料
        <ul>
            <li v-for="item in dataArray">{{item.name}}{{item.age}}</li>
        </ul>
        過濾資料
        <ul>
            <li v-for="item in newArr">{{item.name}}{{item.age}}</li>
        </ul>
        <input v-model="search">
        <button @click="fil">搜尋資料</button>
    </div>
</body>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
    var app = new Vue({
        el: '#app',
        data:{
            dataArray: [
                {
                    name: 'Leo',
                    age:23
                },
                {
                    name: 'Marry',
                    age:30
                },
                {
                    name: 'Peter',
                    age:34
                },
            ],
            search:'',
            newArr:[]
        },
        methods: {
            fil:function(){
                var vm = this;
                vm.newArr = vm.dataArray.filter(function(item){
                    return vm.search.match(item.name);
										//  寫這樣 return item.name.match(vm.search) 也可以 ;
                })
            }
        },
    })
</script>
如果我們使用 v-for in 一個數字並將它綁定在 li 標籤上,li 標籤就會渲染出從1到你指定的數字到畫面上。
<body>
    <div id='app'>
        <ul>
            <li v-for='item in 10'>{{item}}</li>
        </ul>
    </div>
</body>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
    var app = new Vue({
        el: '#app',
    })
</script>